﻿#pragma once
#include "yzrutil.h"
#include "lang/System.h"
namespace yzrilyzr_util{
	EBCLASS(DT){
	private:
	u_time_stamp time=0;
	public:
	void reset(){
		time=0;
	}
	//设置参考时间为当前
	void setDeltaTime(){
		time=yzrilyzr_lang::System::nanoTime();
	}
	//获取与参考时间的时间差，并设置参考时间为当前。适用于计时和fps
	float getAndSetDeltaTime(){
		float dt=getDeltaTime();
		setDeltaTime();
		return dt;
	}
	//获取与上次的时间差
	float getDeltaTime(){
		if(time == 0)setDeltaTime();
		float dt=(float)((yzrilyzr_lang::System::nanoTime() - time) / 1000000.0);
		return dt;
	}
	//判断当前时间与参考时间之差是否大于指定数
	bool isDeltaTime(float dts){
		return getDeltaTime() > dts;
	}
	//判断当前时间与参考时间之差是否大于指定数，如果大于则设置参考时间为当前
	bool isDeltaTimeAndSet(float dts){
		if(getDeltaTime() > dts){
			setDeltaTime();
			return true;
		}
		return false;
	}
	};
}